package com.heima.utils.aliyun;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.TextModerationPlusRequest;
import com.aliyun.green20220302.models.TextModerationPlusResponse;
import com.aliyun.green20220302.models.TextModerationPlusResponseBody;
import com.aliyun.teaopenapi.models.Config;
import com.heima.model.common.dtos.ResponseResult;
import lombok.SneakyThrows;

/**
 * @Date 2024/5/16 10:29
 * @Author
 **/

public class TextModerationPlusUtil {

    @SneakyThrows
    public static ResponseResult checkContent(String content) {
        Config config = new Config();
        /**
         * 阿里云账号AccessKey拥有所有API的访问权限，建议您使用RAM用户进行API访问或日常运维。
         * 常见获取环境变量方式：
         * 方式一：
         *     获取RAM用户AccessKey ID：System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret：System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二：
         *     获取RAM用户AccessKey ID：System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret：System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId("LTAI5tM98Sj5N3uVxeArhXne");
//        config.setAccessKeyId("LTAI5tM98Sj5N3uVxeArhXne6");//测试人工审核
        config.setAccessKeySecret("aN54byLENNDl1jJi7umpyOqr4S2ral");
        //接入区域和地址请根据实际情况修改
        config.setRegionId("cn-shanghai");
        config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
        //连接时超时时间，单位毫秒（ms）。
        config.setReadTimeout(6000);
        //读取时超时时间，单位毫秒（ms）。
        config.setConnectTimeout(3000);
        //设置http代理。
        //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
        //设置https代理。
        //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        serviceParameters.put("content", content);

        TextModerationPlusRequest textModerationPlusRequest = new TextModerationPlusRequest();
        // 检测类型
        textModerationPlusRequest.setService("comment_detection_pro");
        textModerationPlusRequest.setServiceParameters(serviceParameters.toJSONString());

        try {
            TextModerationPlusResponse response = client.textModerationPlus(textModerationPlusRequest);
            if (response.getStatusCode() == 200) {
                TextModerationPlusResponseBody result = response.getBody();
                System.out.println(JSON.toJSONString(result));
                System.out.println("requestId = " + result.getRequestId());
                System.out.println("code = " + result.getCode());
                System.out.println("msg = " + result.getMessage());
                Integer code = result.getCode();
                if (200 == code) {
                    TextModerationPlusResponseBody.TextModerationPlusResponseBodyData data = result.getData();
                    System.out.println(JSON.toJSONString(data, true));

                    String resultData=JSON.toJSONString(data, true);
                    if(resultData.contains("nonLabel")){  //审核通过
                        return ResponseResult.okResult(600,"审核通过");

                    }else{
                        //把所有的分数给获取到，取最大的值，如果最大的值>80   - 拒绝
                        //把所有的分数给获取到，取最大的值，如果最大的值<50   - 通过
                        //50-80  --人工
                        return ResponseResult.errorResult(601,"审核拒绝");
                    }


                } else {
                    System.out.println("text moderation not success. code:" + code);
                    return ResponseResult.errorResult(602, "转人工");
                }
            } else {
                //code不是200，说明调用错误    -- 人工


                System.out.println("response not success. status:" + response.getStatusCode());
                return ResponseResult.errorResult(602, "转人工");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseResult.errorResult(602, "转人工");

        }
        
    }

   
}